import os
from launch import LaunchDescription
from launch_ros.actions import Node
from ament_index_python.packages import get_package_share_directory

def generate_launch_description():
    # SLAM 参数配置
    slam_params = {
        "use_sim_time": True,
        "base_frame": "base_footprint",
        "odom_frame": "odom",
        "map_frame": "map"
    }

    # 定义 SLAM 节点
    slam_cmd = Node(
        package="slam_toolbox",
        executable="sync_slam_toolbox_node",
        parameters=[slam_params]
    )

    # 获取 RViz2 配置文件路径（修复参数错误）
    rviz_file = os.path.join(
        get_package_share_directory('wpr_simulation2'),  # 第一个参数：功能包名称
        'rviz',                                        # 第二个参数：相对路径的第一部分
        'slam.rviz'                                    # 第三个参数：相对路径的第二部分（通过os.path.join拼接）
    )
    
    # 定义 RViz2 节点，传入配置文件参数
    rviz_cmd = Node(
        package='rviz2',
        executable='rviz2',
        name='rviz2',
        arguments=['-d', rviz_file]  # 使用-d参数指定配置文件
    )

    # 将节点添加到启动描述
    return LaunchDescription([slam_cmd, rviz_cmd])
